package com.nidu.demo.common.enums;

import cn.hutool.core.util.ArrayUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public enum OAuth2GrantTypeEnum {

    /**
     * 授权码模式
     */
    AUTHORIZATION_CODE("authorization_code", "授权码模式"),

    /**
     * 密码模式
     */
    PASSWORD("password", "密码模式"),

    /**
     * 简化模式
     */
    IMPLICIT("implicit", "简化模式"),

    /**
     * 客户端模式
     */
    CLIENT_CREDENTIALS("client_credentials", "客户端模式"),

    /**
     * 刷新令牌
     */
    REFRESH_TOKEN("refresh_token", "刷新令牌");

    /**
     * 类型
     */
    private final String type;

    /**
     * 描述
     */
    private final String desc;

    /**
     * 根据类型获取枚举
     *
     * @param type 类型
     * @return 枚举
     */
    public static OAuth2GrantTypeEnum of(String type) {
        return ArrayUtil.firstMatch(o -> o.getType().equals(type), values());
    }
}